package com.example.dao.user;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.domain.UserDO;
import com.example.query.UserQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 用户数据访问层接口
 * 负责与用户业务数据库对接，专注于用户数据的读写操作
 * 使用用户业务数据库（user-db）
 * 
 * @author AI Assistant
 * @since 1.0.0
 */
@Mapper
public interface UserDAO extends BaseMapper<UserDO> {
    
    /**
     * 分页查询用户列表（使用用户业务数据库）
     * 
     * @param page 分页参数
     * @param query 查询条件
     * @return 用户分页数据
     */
    IPage<UserDO> selectUserPage(Page<UserDO> page, @Param("query") UserQuery query);
    
    /**
     * 根据ID查询用户（使用用户业务数据库）
     * 
     * @param id 用户ID
     * @return 用户信息
     */
    UserDO selectUserById(@Param("id") Long id);
    
    /**
     * 插入用户（使用用户业务数据库）
     * 
     * @param user 用户信息
     * @return 影响行数
     */
    int insertUser(UserDO user);
    
    /**
     * 更新用户（使用用户业务数据库）
     * 
     * @param user 用户信息
     * @return 影响行数
     */
    int updateUser(UserDO user);
    
    /**
     * 删除用户（使用用户业务数据库）
     * 
     * @param id 用户ID
     * @return 影响行数
     */
    int deleteUser(@Param("id") Long id);
}

